/************************************************************************

								Heroes IV
					  Copyright 2000, The 3DO Company

	------------------------------------------------------------------
  						 abstract_adv_object_visitor.h

	$Header: /heroes4/abstract_adv_object_visitor.h $

	$NoKeywords: $

 ************************************************************************/

#if !defined( ABSTRACT_ADV_OBJECT_VISITOR_H_INCLUDED )
#define ABSTRACT_ADV_OBJECT_VISITOR_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class t_abstract_adv_object;
class t_abstract_stationary_adv_object;
class t_abstract_adv_actor;

// ------------------------------------------------------------------------------
// t_abstract_adv_object_visitor class
// ------------------------------------------------------------------------------

class t_abstract_adv_object_visitor
{
public:
	// Destructor
	virtual ~t_abstract_adv_object_visitor();

	// Member functions
	virtual void visit( t_abstract_adv_actor & actor );
	virtual void visit( t_abstract_adv_actor const & actor );
	virtual void visit( t_abstract_stationary_adv_object & object );
	virtual void visit( t_abstract_stationary_adv_object const & object );
};

inline t_abstract_adv_object_visitor::~t_abstract_adv_object_visitor()
{
}

inline void t_abstract_adv_object_visitor::visit( t_abstract_adv_actor & actor )
{
	visit( const_cast< t_abstract_adv_actor const & >( actor ) );
}

inline void t_abstract_adv_object_visitor::visit( t_abstract_adv_actor const & actor )
{
}

inline void t_abstract_adv_object_visitor::visit( t_abstract_stationary_adv_object & object )
{
	visit( const_cast< t_abstract_stationary_adv_object const & >( object ) );
}

inline void t_abstract_adv_object_visitor::visit( t_abstract_stationary_adv_object const & object )
{
}

#endif // !defined( ABSTRACT_ADV_OBJECT_VISITOR_H_INCLUDED )
